import html2canvas from "html2canvas"
import JsPDF from "jspdf"

export default {
  install(Vue, options) {
      window.pageYOffset = 0;
      document.documentElement.scrollTop = 0
      document.body.scrollTop = 0
      Vue.prototype.getPdfFromHtml = function(ele, pdfFileName) {
        setTimeout(_ => {
          html2canvas(ele, {
              dpi:144,
              scale: 1.2,
              width:1200,
              useCORS:true//允许canvas画布内可以跨域请求外部链接图片, 允许跨域请求。
          }).then(canvas=> {
            let contentWidth = canvas.width*2
            let contentHeight = canvas.height*2
            console.log('contentWidth', contentWidth)
            console.log('contentHeight', contentHeight)
            // 将canvas转为base64图片
            let pageData = canvas.toDataURL('image/jpeg', 1.0)

            // 设置pdf的尺寸，pdf要使用pt单位 已知 1pt/1px = 0.75   pt = (px/scale)* 0.75
            // 2为上面的scale 缩放了2倍
            let pdfX = (contentWidth + 10) / 2 * 0.75
            let pdfY = (contentHeight + 500) / 2 * 0.75 // 500为底部留白
            // 设置内容图片的尺寸，img是pt单位 
            let imgX = pdfX;
            let imgY = (contentHeight / 2 * 0.75); //内容图片这里不需要留白的距离
            // 初始化jspdf 第一个参数方向：默认''时为纵向，第二个参数设置pdf内容图片使用的长度单位为pt，第三个参数为PDF的大小，单位是pt
            let PDF = new JsPDF('', 'pt', [pdfX, pdfY])
            console.log(PDF)
            // 将内容图片添加到pdf中，因为内容宽高和pdf宽高一样，就只需要一页，位置就是 0,0
            PDF.addImage(pageData, 'jpeg', 0, 0, imgX-12, imgY)
            // PDF.save('download.pdf')
            PDF.save(pdfFileName + ".pdf")
          })
        },500)
      }
  }
}